package javaCode.chapter14.generic;

/**
 * @author 徐州城
 * @version 1.0
 */
public class Generic03 {
    public static void main(String[] args) {

        //注意，特别强调：E具体的数据类型在定义Person对象时指定，即在编译时，就确定E是什么类型
        Person<String> stringPerson = new Person<>("");
        stringPerson.show();
        /*
            可以这样理解，上面的Person类
            class Person {
                String s; //E 表示s数据类型，改数据类型是在定义Person对象时候指定，即在编译期间，就确定E是什么类型

                public Person(String s) {//E也可以是参数类型
                    this.s = s;
                }

                public String way(){//返回类型使用E
                    return s;
                }
            }
         */


    }
}

//泛型的作用是：可以在类声明时通过一个表示表示类中某个属性的类型，
// 或者是某个方法的返回值的类型，或者是参数类型。
//E可以理解是 数据类型的一种数据类型
class Person<E> {
    E s; //E 表示s数据类型，改数据类型是在定义Person对象时候指定，即在编译期间，就确定E是什么类型

    public Person(E s) {//E也可以是参数类型
        this.s = s;
    }

    public E way(){//返回类型使用E
        return s;
    }

    public void show(){
        System.out.println(s.getClass()); //显示s的运行类型
    }
}